package com.nicolas.pattern.command.undo;

/**
 * 具体命令类
 * 扩展 除了通过一个逆向操作来实现撤销(Undo)外，
 * 还可以通过保存对象的历史状态来实现撤销，
 * 后者可使用备忘录模式(Memento Pattern)来实现。
 * @author nicolas  2017年2月12日 -- 下午7:33:36
 */
public class ConcreteCommand extends AbstractCommand {  
    private Adder adder = new Adder();  
    private int value;  
          
    //实现抽象命令类中声明的execute()方法，调用加法类的加法操作  
    public int execute(int value) {  
        this.value=value;  
        return adder.add(value);  
    }  
      
    //实现抽象命令类中声明的undo()方法，通过加一个相反数来实现加法的逆向操作  
    public int undo() {  
        return adder.add(-value);  
    }  
}  